var Common = {};
Common.Util = {
	//打开遮罩
	showMask: function () {
		$(".mask").fadeIn();
	},
	//隐藏遮罩
	hideMask: function () {
		$(".mask").fadeOut();
	},
	//关闭弹出层
	hidePop: function () {
		$(".popup").hide(),
			$(".mask").fadeOut();
	},

	/**
	 * 弹出窗口居中
	 */
	setPopUpCenter: function () {
		$(".popup").each(function () {
			var h = $(this).height();
			var w = $(this).width();
			$(this).css("margin-left", "-" + w / 2 + "px").css("margin-top", "-" + h / 2 + "px");
		});

	},
	/**
	 * 显示消息提示
	 * @param msg
	 * 		消息内容
	 * @param type
	 * 		消息类型（成功"success" 信息"info" 警告"warning" 错误"error"）
	 * @param hideAfter
	 * 		延时几秒后关闭消息窗体
	 */
	showMessage: function (msg, type, hideAfter) {
		if (!msg) return;
		var type = "undefined" == typeof type ? "info" : type,
			hideAfter = "undefined" == typeof hideAfter ? "3000" : hideAfter; //默认3秒停留时间
		toastr.options.closeButton = "true";
		toastr.options.timeOut = hideAfter;
		toastr[type](msg);
	},
	/**
	 * 用户头像存储
	 */
	cache : {},
	opts: {
		args: {}, //弹出层中通过args参数名传过来的参数(兼容原弹出层插件)
		content: '', // 消息内容
		title: '', // 标题. 默认'消息'
		button: null, // 自定义按钮
		ok: null, // 确定按钮回调函数
		cancel: null, // 取消按钮回调函数
		init: null, // 对话框初始化后执行的函数
		close: null, // 对话框关闭前执行的函数
		okVal: '\u786E\u5B9A', // 确定按钮文本. 默认'确定'
		cancelVal: '\u53D6\u6D88', // 取消按钮文本. 默认'取消'
		width: '', // 内容宽度
		height: '', // 内容高度
		minWidth: 96, // 最小宽度限制
		minHeight: 32, // 最小高度限制
		padding: '20px 25px', // 内容与边界填充距离
		skin: '', // 皮肤名(预留接口,尚未实现)
		icon: '', // 消息图标名称
		time: null, // 自动关闭时间
		esc: true, // 是否支持Esc键关闭
		focus: true, // 是否支持对话框按钮自动聚焦
		show: true, // 初始化后是否显示对话框
		follow: null, // 跟随某元素(即让对话框在元素附近弹出)
		path: '', // artDialog路径
		lock: true, // 是否锁屏
		background: '#000', // 遮罩颜色
		opacity: 0.5, // 遮罩透明度
		duration: 300, // 遮罩透明度渐变动画速度
		fixed: false, // 是否静止定位
		left: '50%', // X轴坐标
		top: '38.2%', // Y轴坐标
		zIndex: 2999, // 对话框叠加高度值(重要：此值不能超过浏览器最大限制)
		resize: true, // 是否允许用户调节尺寸
		drag: true // 是否允许用户拖动位置
	},
	/**
	 * 显示弹出框
	 */
	show: function (options) {
		// 设置artDialog 的显示为iframe 或 html
		options.showmode = options.showmode ? options.showmode : "iframe";
		options.id = options.id ? options.id : (new Date()).getTime(); // 处理artDilog
		if (!options.args) {
			options.args = {
				id: options.id
			};
		} else {
			options.args = $.extend({
				id: options.id
			}, options.args)
		}

		//初始化时最大化
		if (options.maximization == true) {
			options.height = $(top.window).height() - 75;
			options.width = $(top.window).width() - 30;
		}


		//宽度和高度值处理
		if (options.width && options.width > 0) {
			options.width = options.width + ""; //转成字符
			options.width = (options.width.indexOf("%") > 0 && options.width.indexOf("px") > 0) ? options.width : (options.width + "px");
		}
		if (options.height && options.height > 0) {
			options.height = options.height + ""; //转成字符
			options.height = (options.width.indexOf("%") > 0 && options.width.indexOf("px") > 0) ? options.height : (options.height + "px");
		}

		//增加参数
		for (var i in options) {
			this.opts[i] = options[i];
			if (i == 'isResetSize') {
				this.opts.resize = options[i];
			}
		};

		//设置回调函数

		if (options.close) {
			this.opts.close = options.close;
			//this.opts.ok = function(){return false}
		}
		//设置args参数
		artDialog.data("args", this.opts.args);
		if (options.showmode == "iframe") {
			this.showIframe();
		} else {
			this.showHtml();
		}
		return options.id;
	},
	showIframe: function () {
		//打开弹出层
		artDialog.open(this.opts.url, this.opts, false);
	},
	showHtml: function (options) {
		//Html 打开方式 这里使用top的顶层打开
		this.options = options;
		top.artDialog(options);
	},
	/**
	 * 设置返回值并关闭窗口
	 */
	 doReturn: function (result) {
		var winArtDialog = artDialog.getOpenApi();
		var rtn = winArtDialog.close(result);
		top.$("iframe").show();
	},

	/**
	 * 获取用户头像图片url地址
	 * @param userId
	 */
	getAvatar: function (userId) {
		if (!this.cache[userId]) {
			$.ajax({
				type: "GET",
				url: contextPath + "/contacts/contacts/getAvatar.action",
				data: {
					"id": userId
				},
				async: false,
				dataType: "json",
				success: function (result) {
					if (1 == result.status) {
						Common.Util.cache[userId] = result.data;
					}
				}
			});
		}

		return this.cache[userId];;
	},
	/**
	 * 计算时间差
	 * @param date,date2
	 */
	daysCalc: function (date, date2) {
		var startDateArr = date.split(/[- :]/);
		var startDate = new Date(startDateArr[0], startDateArr[1] - 1, startDateArr[2], startDateArr[3], startDateArr[4]);
		if (!date2 || date2 == "") {
			var nowDate = new Date();
		} else {
			var nowDate = new Date(date2);
		}
		var msDate = nowDate.getTime() - startDate.getTime();
		//计算出相差天数
		var days = Math.floor(msDate / (24 * 3600 * 1000));
		//计算出小时数
		var leave1 = msDate % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
		var hours = Math.floor(leave1 / (3600 * 1000));
		//计算相差分钟数
		var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
		var minutes = Math.floor(leave2 / (60 * 1000));
		//计算相差秒数
		var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
		var seconds = Math.round(leave3 / 1000);
		//alert(" 相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒");	
		var timeCalc = {
			"days": days,
			"hours": hours,
			"minutes": minutes,
			"seconds": seconds
		};
		return timeCalc;
	},
	/**
	 * 格式化模板
	 * @param str, model
	 */
	format: function (str, model) { //格式化指定键值的模板
		for (var k in model) {
			var re = new RegExp("{" + k + "}", "g");
			str = str.replace(re, model[k]);
		}
		return str;
	},
	/**
	 * 渲染分页
	 */
	renderPagination: function (callback) {
		var $paginationPanel = $("#pagination-panel");
		var _options = eval("(" + $paginationPanel.data("options") + ")");
		var _datasPageCurrent = parseInt($("[name='_currpage']").val()) - 1;
		var _datasPageCount = parseInt($("[name='_rowcount']").val());
		var _datasPageItem = parseInt($("[name='_pagelines']").val());

		_options._datasPageCount = _datasPageCount;
		_options._datasPageNo = _datasPageCurrent;
		_options._totalRowText = _datasPageCount;
		if (_options._isPagination && _options._isPagination == "true") {

			if (!callback || typeof callback != "function") {
				callback = function () {
					//回调方法
				}
			}

			if (!_datasPageItem || _datasPageItem == undefined) {
				_datasPageItem = 10;
			}

			var $paginationPanel = $("#pagination-panel");

			$paginationPanel.append("<div class='pagination-body'></div><div class='pagination-other'></div>")
			if (_options._totalRowText != 0) {
				$paginationPanel.find(".pagination-body").pagination(_datasPageCount, {
					current_page: _datasPageCurrent,
					items_per_page: _datasPageItem,
					prev_text: "<span class='glyphicon glyphicon-chevron-left'></span>",
					next_text: "<span class='glyphicon glyphicon-chevron-right'></span>",
					num_edge_entries: 1,
					num_display_entries: 5,
					callback: callback
				});


				$paginationPanel.find("a").on("click", function () {
					var $this = $(this);
					var $form = $("form:eq(0)");
					var _pageNo = parseInt($("[name='_currpage']").val());
					var _rowNo = parseInt($("[name='_rowcount']").val());
					var _lineNo = parseInt($("[name='_pagelines']").val());
					var _pageCount = Math.ceil(_rowNo / _lineNo);
					var _pageNum;

					if (isNaN(_pageNo) || isNaN(_rowNo) || isNaN(_lineNo)) {
						return;
					}
					if ($this.hasClass("prev")) {
						if (_pageNo > 1) {
							_pageNum = _pageNo - 1;
						} else {
							return;
						}
					} else if ($this.hasClass("next")) {
						if (_pageCount > 1 && _pageCount > _pageNo) {
							_pageNum = _pageNo + 1;
						} else {
							return;
						}
					} else {
						_pageNum = parseInt($(this).text());
					}
					var page = $form.find("[name='_currpage']").val(_pageNum);
					if (isNaN(page)) {
						var params = {
							"type": $("[name='type']").val(),
							"status": $("[name='status']").val() ? $("[name='status']").val() : 1,
							"_currpage": _pageNum,
							"_pagelines": _lineNo,
						}
						initList(params);
					} else {
						var params = {
							"type": $("[name='type']").val(),
							"status": $("[name='status']").val(),
							"_currpage": "1",
							"_pagelines": _lineNo,
						}
						initList(params);
					}
				})

				if (_options._isShowItem && _options._isShowItem == "true") {
					var showItem = "<div class='showItemPanel'>" +
						"<ul style='display: none;'><li>100条</li>" +
						"<li>50条</li>" +
						"<li>25条</li>" +
						"<li>10条</li></ul>" +
						"<div class='showItemBtn'>" + _datasPageItem + "条 " +
						"<span class='glyphicon glyphicon-chevron-up'></span></div>" +
						"</div>";
					$paginationPanel.find(".pagination-other").append(showItem);
					$paginationPanel.find(".showItemBtn").on("click", function () {
						$(this).prev("ul").slideToggle("fast");
					})

					$paginationPanel.find("li").on("click", function () {
						var pageLine = parseInt($(this).text());
						$("[name='_currpage']").val(1);
						setCookie("fileList_pageLine", pageLine);
						var params = {
							"type": $("[name='type']").val(),
							"status": $("[name='status']").val() ? $("[name='status']").val() : 1,
							"_currpage": $("[name='_currpage']").val(),
							"_pagelines": pageLine,
						}
						initList(params);
					})

					$(document).on("click", function (e) {
						if ($(e.target).closest(".showItemPanel").size() <= 0 && $paginationPanel.find(".showItemPanel").find("ul").is(":visible")) {
							$paginationPanel.find(".showItemPanel").find("ul").slideToggle("fast");
						}
					})
				}

				if (_options._isShowTotalRow && _options._isShowTotalRow == "true") {
					var totalRow = "<div class='totalRowPanel'>总条数: " + _options._totalRowText + "</div>";
					$paginationPanel.find(".pagination-other").append(totalRow);
				}
			} else {
				var $space = '<div class="toCreate" role="tabpanel"><div id="content-space">' +
					'<table height="100%" width="100%" border="0"><tbody><tr><td align="center" valign="middle">' +
					'<div class="content-space-pic iconfont-qm">&#xe002;</div><div class="content-space-txt text-center">没有问卷</div>' +
					'</td></tr></tbody></table></div></div>'
				$paginationPanel.append($space);
			}

		}
	}
}